<?php

namespace IMooc;

class Object 
{
    protected $array = array();

    /**
     * 设置属性
     * param $key 键
     * param $value 值
     * $obj->title = 'hello';
     */
    public function __set($key, $value) 
    {
        $this->array[$key] = $value;
    }

    /**
     * 获取属性
     * param $key 键
     * echo $obj->title;
     */
    public function __get($key) 
    {
        return $this->array[$key];
    }

    /**
     * 调用非静态方法
     * param $func 方法名
     * param $param 参数
     * echo $obj->test('hello', 123);
     */
    public function __call($func, $param) 
    {
        return 'magic function';
    }

    /**
     * 调用静态方法
     * param $func 方法名
     * param $param 参数
     * echo $obj::test('hello', 123);
     */
    public function __callStatic($func, $param) 
    {
        return 'magic static function';
    }

    /**
     * 
     */
    public function __toString()
    {
        return __CLASS__;
    }

    /**
     * echo $obj('test1');
     */
    public function __invoke($param)
    {
        var_dump($param);
        return 'invoke';
    }
}